i just solved using a new class
#import <UIKit/UIKit.h>
@interface ZoomScrollViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *zoomScrollView;
@end
#import "ZoomScrollViewController.h"
#import <sys/utsname.h>
@implementation ZoomScrollViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Disabilita gli inset automatici su iOS 11+
if (@available(iOS 11.0, *)) {
self.zoomScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
// Se stai usando Interface Builder, collega la scrollView via outlet.
// Altrimenti:
UIView *orig = self.view;
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:orig.frame];
scroll.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scroll.delegate = self;
scroll.backgroundColor = [UIColor blackColor];
self.zoomScrollView = scroll;
[scroll addSubview:orig];
self.view = scroll;
// Assicurati che lo scrollView non si veda “bianco” dove non c'è contenuto
self.zoomScrollView.backgroundColor = self.view.backgroundColor;
// Disabilita inset automatici su iOS 11+
if (@available(iOS 11.0, *)) {
self.zoomScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
}
// Helper per recuperare l’identificativo del device
- (NSString*)deviceModelIdentifier {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
UIView *content = self.zoomScrollView.subviews.firstObject;
if (!content) return;
// 1) Reset
content.transform = CGAffineTransformIdentity;
content.frame = CGRectMake(0, 0, 1024, 768);
// 2) Dimensioni container
CGSize cSize = self.zoomScrollView.bounds.size;
CGFloat scaleX = cSize.width / 1024.0;
CGFloat scaleY = cSize.height / 768.0;
// 3) Controllo dispositivo
NSString *modelID = [self deviceModelIdentifier];
NSLog(@"🔖 Device model: %@", modelID);
NSLog(@"scaleX: %.3f, scaleY: %.3f", scaleX, scaleY);
BOOL isiPadMiniOrA16 = NO;
if ([modelID hasPrefix:@"iPad14,1"] ||
[modelID hasPrefix:@"iPad14,2"] ||
[modelID hasPrefix:@"iPad14,6"] ||
[modelID hasPrefix:@"iPad14,7"] ||
[modelID hasPrefix:@"iPad15,7"]) {
isiPadMiniOrA16 = YES;
}
if (isiPadMiniOrA16) {
scaleX = 1.152;
// puoi mantenere scaleY come calcolato sopra, oppure settarlo fisso se necessario
}
NSLog(@"scaleX: %.3f, scaleY: %.3f", scaleX, scaleY);
// 4) Applica trasformazione (stretch X)
content.transform = CGAffineTransformMakeScale(scaleX, scaleY);
// 4b) Centra il contenuto trasformato nella scrollView
CGSize scaledSize = CGSizeMake(1024 * scaleX, 768 * scaleY);
self.zoomScrollView.contentSize = scaledSize;
CGFloat offsetX = (self.zoomScrollView.bounds.size.width - scaledSize.width) / 2.0;
CGFloat offsetY = (self.zoomScrollView.bounds.size.height - scaledSize.height) / 2.0;
// Assicura che gli offset siano >= 0
offsetX = MAX(0, offsetX);
offsetY = MAX(0, offsetY);
// Posiziona il contenuto al centro
content.center = CGPointMake(scaledSize.width / 2.0 + offsetX,
scaledSize.height / 2.0 + offsetY);
// 5) Calcola nuova size del contenuto trasformato
self.zoomScrollView.contentSize = scaledSize;
// 6) Centra orizzontalmente solo se necessario
CGFloat xOff = (scaledSize.width - cSize.width) / 2.0;
[self.zoomScrollView setContentOffset:CGPointMake(xOff, 0) animated:NO];
// 7) Disattiva lo zoom dinamico della scrollView
self.zoomScrollView.minimumZoomScale = 1.0;
self.zoomScrollView.maximumZoomScale = 1.0;
self.zoomScrollView.zoomScale = 1.0;
}
@end
code-block
with this tricks works in ios18.5 and 26
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
i found a UIDesignRequiresCompatibility for plist, but i don't understand if is temporary until beta or will works in the future
Topic:
UI Frameworks
SubTopic:
UIKit
Tags:
i have the same issue... my application have over 600 views objc + xib what the way for adapt the app fullscreen? we cannot rewrite all views
Topic:
UI Frameworks
SubTopic:
UIKit
Tags:
using a function for autoresizing works... in the future what do you suggest me? using swift and objc both, rewritter is too big project
-(void)fixAutoResizingForSubviews:(UIView *)parent {
// 19/06/2025 Simone per ios26
for (UIView *sub in parent.subviews) {
if (sub == barMenu) {
sub.autoresizingMask = UIViewAutoresizingFlexibleWidth; // No flexibleHeight
} else {
sub.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
[self fixAutoResizingForSubviews:sub];
}
}
i try to update using autolayout but another issue is the new 3 buttons (close, hide and fullscreen) are over the uibutton inside ma left bar, is it possible create a margin when are showed?
sorry, i just attached sample... this project was born in 2013 with objc and xib, at the moment is over 300 views and use xib with a scaled zoom for adapt to screen size like:
CGFloat scale=[[UIScreen mainScreen] scale];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGSize screenSize = CGSizeMake(screenBounds.size.width*scale,screenBounds.size.height*scale);
// 2048 e 1536 sono le risoluzioni del retina
CGFloat scalaX=screenSize.width/2048;
CGFloat scalaY=screenSize.height/1536;
if ((screenSize.width==1366) && (screenSize.height==1024))
{
scalaX=1.34;
scalaY=1.34;
}
if (scalaX<1)
{
scalaX=1;
}
if ((scalaY<1) && (!((screenBounds.size.width*scale==2266) && (screenBounds.size.height*scale==1488))))
{
scalaY=1;
}
CGAffineTransform transform = CGAffineTransformMakeScale(scalaX,scalaY);
self.view.transform = transform;
code-block
solved with 17.7.8 today
Topic:
App & System Services
SubTopic:
Core OS
Tags:
mee too, any solutions for ipad 6th gen?
Topic:
App & System Services
SubTopic:
Core OS
Tags:
any ideas for can use webpush notification inside webpage like pwa?
Topic:
App & System Services
SubTopic:
Core OS
Tags:
with ios17.4 will be works fcm firebase webpush notification?
Topic:
App & System Services
SubTopic:
Notifications
Tags:
i found a possible solution: https://github.com/sumup/sumup-ios-sdk/issues/133
my issue will be solve removing sumup sdk (that i use inside a project)
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags:
i try to create programmatically but the error is the same:
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDateAndTime;
if (@available(iOS 13.4, *)) {
[datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels];
} else {
// Fallback on earlier versions
}
datePicker.date = [NSDate date];
[self.view addSubview:datePicker];
datePicker.frame = CGRectMake(0, 0, self.view.frame.size.width, 216); // Puoi personalizzare queste dimensioni a tuo piacimento
if (@available(iOS 15.0, *)) {
datePicker.roundsToMinuteInterval=NO;
} else {
// Fallback on earlier versions
}
if i put datePicker.datePickerMode = UIDatePickerModeDate; works... the issue is when contant is time
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags:
the project is objectc project create on 2013, during the years will be updates but have over 200 views in xib mode, everything works but uipicker crash... is uikit project
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags:
the problem is that if i simply put a datapicker inside a new project works... if i put datepicker in a form already present (on xib) and i set time wheel, when i scroll the time crash, but in the class there isn't any event of datepicker, only scroll crash (inside the apple library).. the same with ios 17.0 works
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags:
try also with ios17.2 but crash always
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff80049aa09 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff8000638b4 objc_exception_throw + 48
2 CoreFoundation 0x00007ff800508c8d -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 604
3 CoreFoundation 0x00007ff800499200 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 49
4 UIKitCore 0x00007ff804ce4703 __59-[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:]_block_invoke.150 + 156
5 UIKitCore 0x00007ff804ce3fd0 -[_UIDatePickerCalendarTimeLabel applyTextAttributesForState:inputScope:updater:] + 404
6 UIKitCore 0x00007ff804ce432f -[_UIDatePickerCalendarT
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff80049aa09 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff8000638b4 objc_exception_throw + 48
2 CoreFoundation 0x00007ff800508c8d -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 604
3 CoreFoundation 0x00007ff800499200 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 49
4 UIKitCore 0x00007ff804ce4703 __59-[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:]_block_invoke.150 + 156
5 UIKitCore 0x00007ff804ce3fd0 -[_UIDatePickerCalendarTimeLabel applyTextAttributesForState:inputScope:updater:] + 404
6 UIKitCore 0x00007ff804ce432f -[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:] + 667
7 UIKitCore 0x00007ff805ef44c6 -[_UIDatePickerWheelsTimeLabel pushCurrentStateIntoUI] + 77
8 UIKitCore 0x00007ff804ce4e3a -[_UIDatePickerCalendarTimeLabel stateMachineUpdateFromState:toState:] + 148
9 UIKitCore 0x00007ff805ef4c5c -[_UIDatePickerWheelsTimeLabel stateMachineUpdateFromState:toState:] + 47
10 UIKitCore 0x00007ff804ce3675 __68-[_UIDatePickerCalendarTimeLabel initWithTimeFormat:minuteInterval:]_block_invoke + 50
11 UIKitCore 0x00007ff805c61524 handleEvent + 298
12 UIKitCore 0x00007ff804ce4d8f -[_UIDatePickerCalendarTimeLabel _stateMachineSendEvent:] + 110
13 UIKitCore 0x00007ff805ef4cac -[_UIDatePickerWheelsTimeLabel beginEditingWheels] + 42
14 UIKitCore 0x00007ff805b53f64 -[_UIDatePickerView pickerTableView:didChangeSelectionBarRowFrom:to:] + 704
15 UIKitCore 0x00007ff805b5aa4c -[UIPickerColumnView pickerTableView:didChangeSelectionBarRowFrom:to:] + 171
16 UIKitCore 0x00007ff805b5ee1a -[UIPickerTableView _setSelectionBarRow:] + 223
17 UIKitCore 0x00007ff805b5e5a3 -[UIPickerTableView _setContentOffset:notify:] + 583
18 UIKitCore 0x00007ff8061ce25c -[UIScrollView _updatePanGesture] + 5091
19 UIKitCore 0x00007ff80551c3f9 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 71
20 UIKitCore 0x00007ff8055260a3 _UIGestureRecognizerSendTargetActions + 100
21 UIKitCore 0x00007ff805522dfb _UIGestureRecognizerSendActions + 303
22 UIKitCore 0x00007ff8055221a8 -[UIGestureRecognizer _updateGestureForActiveEvents] + 685
23 UIKitCore 0x00007ff80550f80d _UIGestureEnvironmentUpdate + 3935
24 UIKitCore 0x00007ff80550e449 -[UIGestureEnvironment _updateForEvent:window:] + 892
25 UIKitCore 0x00007ff805becceb -[UIWindow sendEvent:] + 5262
26 UIKitCore 0x00007ff805bc1cfc -[UIApplication sendEvent:] + 772
27 UIKitCore 0x00007ff805c700ef __dispatchPreprocessedEventFromEventQueue + 8406
28 UIKitCore 0x00007ff805c729ac __processEventQueue + 8415
29 UIKitCore 0x00007ff805c685f6 __eventFetcherSourceCallback + 163
30 CoreFoundation 0x00007ff8003f7487 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
31 CoreFoundation 0x00007ff8003f73c9 __CFRunLoopDoSource0 + 157
32 CoreFoundation 0x00007ff8003f6bc6 __CFRunLoopDoSources0 + 215
33 CoreFoundation 0x00007ff8003f12fb __CFRunLoopRun + 919
34 CoreFoundation 0x00007ff8003f0b81 CFRunLoopRunSpecific + 557
35 GraphicsServices 0x00007ff8103b808f GSEventRunModal + 137
36 UIKitCore 0x00007ff805ba1229 -[UIApplication _run] + 972
37 UIKitCore 0x00007ff805ba5c97 UIApplicationMain + 123
38 simulatore 0x0000000108b5b488 main + 104
39 dyld 0x000000010a1023e0 start_sim + 10
40 ??? 0x000000010d3d83a6 0x0 + 4517102502
)
libc++abi: terminating due to uncaught exception of type NSException
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: